home *** CD-ROM | disk | FTP | other *** search
- vs.1.1
-
- ;
- ; v0 = position
- ; v1 = weights
- ; v2 = matrix indices
- ; v3 = normals
- ; v7 = texture coords
- ;
- ; c0-3 = SkinWorldViewProj
- ; c4 = color
- ; c5 = constants - 1,1,1,255.01
- ; c10+ = bone matrices
-
- dcl_position v0
- dcl_blendweight v1
- dcl_blendindices v2
- dcl_normal v3
- dcl_texcoord v7
-
- ; Determine the 4th weight
- mov r0.xyz, v1.xyz ; r0.xyz = w0,w1,w2
- dp3 r0.w, v1.xyz, c5.xxxx ; r0.w = w0 + w1 + w2
- add r0.w, -r0.w, c5.x ; r0.2 = 1 - (w0 + w1 + w2) = w3
-
- ; Need to offset the values
- ;mul r1, v2.xyzw, c5.wwww ; r1 = indices w/ offset
- mul r1, v2.zyxw, c5.wwww ; r1 = indices w/ offset (D3DCOLOR Version)
-
- ; First bone
- mov a0.x, r1.x
- mul r2, r0.x, c[a0.x+0+10]
- mul r3, r0.x, c[a0.x+1+10]
- mul r4, r0.x, c[a0.x+2+10]
-
- ; Second bone
- mov a0.x, r1.y
- mad r2, r0.y, c[a0.x+0+10], r2
- mad r3, r0.y, c[a0.x+1+10], r3
- mad r4, r0.y, c[a0.x+2+10], r4
-
- ; Third bone
- mov a0.x, r1.z
- mad r2, r0.z, c[a0.x+0+10], r2
- mad r3, r0.z, c[a0.x+1+10], r3
- mad r4, r0.z, c[a0.x+2+10], r4
-
- ; Fourth bone
- mov a0.x, r1.w
- mad r2, r0.w, c[a0.x+0+10], r2
- mad r3, r0.w, c[a0.x+1+10], r3
- mad r4, r0.w, c[a0.x+2+10], r4
-
- ; Transform weighted position
- dp4 r5.x, v0, r2
- dp4 r5.y, v0, r3
- dp4 r5.z, v0, r4
- mov r5.w, c5.x
-
- ; World, view, projection
- ;dp4 oPos.x, r5, c0
- ;dp4 oPos.y, r5, c1
- ;dp4 oPos.z, r5, c2
- ;dp4 oPos.w, r5, c3
- m4x4 oPos, r5, c0
-
- ; Texture coordinates
- mov oT0.xy, v7.xy
-